草庐IT

JavaScript 局部变量和全局变量混淆

全部标签

ruby-on-rails - RVM:创建一个不从全局继承的gemset?

我正在开始一个用Rails2编写的项目。看起来它需要旧版本的Rake,它在我的Ruby1.8.7全局gemset中。我想避免只为这个应用程序卸载全局1.8.7rake。无论如何我可以创建一个忽略全局gemset的gemset吗?编辑:我想避免的最明显的解决方案是从全局gemset中卸载gem。在我的特殊情况下,我开始了一些遗留应用程序的工作。它与rake0.9.3和我的调试gems(awesome_print、hirb、wirb等)之类的gem一起中断。虽然我目前的解决方案(在下面的评论中)是一个hack,但它似乎是我想要的最少工作量。我希望有一些我不知道的gemset异常命令。

ruby - 来自 rails 3 中 therubyracer/v8 的 javascript 错误的堆栈跟踪

我正在使用therubyracer和v8在Rails3应用程序中运行一些javascript如果出现任何问题,错误消息将通过通常的Rails3异常通知流程通过电子邮件发送给我。但是,我返回的错误消息非常模糊,堆栈跟踪不会进入javascript文件本身。这是可以理解的,但是很难调试。这是一个例子:V8::JSError:Cannotreadproperty'0'ofundefinedbacktrace:lib/libraryname.rb:32:in`function_that_calls_v8'lib/libraryname.rb:18:in`fetch_and_update'app

Ruby - 数组方法混淆

我们可以像这样在顶层调用Array方法Array(something)这对我来说很有意义,它是一个没有显式接收者的方法调用,并且在本例中是main的self被插入到方法调用的前面。但这不是等同于:Kernel.Array(something)这对我来说没有意义。由于在第一种情况下,对象main属于Object类,其中混入了Kernel模块,因此具有Array方法。但是在第二种情况下,我们在内核模块对象本身而不是主对象上调用Array方法,它们不是一回事吗?抱歉我的英语不好。 最佳答案 Kernel.Array是所谓的模块函数。模块函

ruby-on-rails - 无法在 ruby​​ on rails Controller 中设置/使用 session 变量

有人能告诉我从头开始在ruby​​onrails应用程序中设置/使用session变量的正确方法吗?我无法在两个页面之间的Controller中设置/使用session变量。我正在使用CookieStoresession类型。这是用于设置和获取session变量的语法:session[:test]="testing"@test_str=session[:test]如果我遗漏了什么,请告诉我。这是我的Controller的样子:classPaymentsControllerfalseend#POST/post_to_mobikwikdefpost_to_mobikwikzr=Mobikw

ruby-on-rails - 如何在不丢失注释和变量的情况下更新 Rails 语言环境 YAML 文件?

我正在构建一个Ruby脚本来更改config/locales/*.ymlRails语言环境文件的内容。这些文件包含许多有用的注释和变量。通过加载、更新和转储它们,我丢失了这些注释和变量。如何在保留注释和变量的同时以编程方式更新YAML文件? 最佳答案 我不认为你可以。YAML会忽略数据文件中的注释,但不会解析它们,因此它们会在文件加载时被丢弃。加载文件后,它们就消失了。我能想到的做你想做的唯一方法是在YAML之外打开文件,然后编写注释,然后写入使用to_yaml创建的YAML内容。像这样的东西:require'yaml'data={

ruby - 基于 Ruby 语法的未定义局部变量

在下面的Ruby代码中,#!/usr/bin/envrubyx=truey=xandz=yputs"z:#{z}"它将按预期输出z:true。但在下一个中,我希望它具有相同的行为:#!/usr/bin/envrubyx=truez=yify=xputs"z:#{z}"结果undefinedlocalvariableormethod'y'formain:Object(NameError)这是为什么呢?我知道我正在做一个赋值,并隐式检查赋值以确定是否运行z=y。我还了解到,如果我在x=5行之后添加y声明y=nil,它将按预期通过并运行。但是,期望语言应该首先评估if部分,然后评估其内容,然

ruby-on-rails - 用于 Ruby 的 vim 中的全局 "Go to definition"?

自97年以来我一直在使用vi/vim进行各种快速编辑和管理任务,但最近才考虑使用它来替换Netbeans作为我选择的ruby​​编辑器。我发现一件事在Netbeans和Eclipse中非常有用的是Ctrl+Click“转到定义”功能,您可以在其中按住Ctrl键并单击一个类或方法,然后它将带您了解定义。现在,我玩过丰富的ctags和rails.vim,而且很接近,但没有雪茄。这就是我想要的:默认情况下在Netbeans和Eclipse中,您可以在本地rails中按住ctrl并单击本地方法或类项目,但你也可以ctrl+click定义在gems或用Ruby编写的系统库。以Netbeans为例

ruby - 如何知道实例变量何时在 Ruby 中设置

有什么方法可以覆盖Ruby中实例变量的设置吗?假设我设置了一个实例变量:@foo="bar"我可以拦截它并做一些事情吗(例如记录它或放置)我想,我正在尝试覆盖所有类型的赋值运算符。这甚至可以做到吗?到目前为止,我想到的最好的是:classModuledefattr_log_accessor(*symbols)symbols.each{|symbol|module_eval("def#{symbol}()@#{symbol};end")module_eval("def#{symbol}=(val)@#{symbol}=valputs\"#{symbol}haschanged\"end")

Ruby block 、过程和局部变量

在Ruby中,proc似乎可以访问在声明它们时就存在的局部变量,即使它们是在不同的范围内执行的:moduleScope1defself.scope1_methodputs"Inscope1_method"endendmoduleScope2defself.get_procx=42Proc.newdoputsxputsselfscope1_methodendendendScope1.instance_eval(&Scope2.get_proc)输出:42Scope1Inscope1_method这是如何发生的,为什么会发生? 最佳答案

ruby - 使用 s3 gem + rails 4.1.5 时不允许将 `@@{' 作为类变量名称(SyntaxError)

我知道已经有人问过这种类型的问题了。我使用s3gem将我的文件上传到s3存储桶中。但是在安装s3gem之后,当我启动railsserver时它显示了这个错误:/var/lib/gems/1.9.1/gems/aws-s3-0.6.3/lib/aws/s3/extensions.rb:223:in`class_eval':/var/lib/gems/1.9.1/gems/aws-s3-0.6.3/lib/aws/s3/extensions.rb:223:`@@{'isnotallowedasaclassvariablename(SyntaxError)/var/lib/gems/1.9.